package io.qdb.server; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.spi.ILoggingEvent; import com.typesafe.config.Config; import me.moocar.logbackgelf.GelfAppender; import org.slf4j.LoggerFactory; /** * Configures logging if using logback. */ public class LogbackLogging { public void init(Config cfg) { org.slf4j.Logger slf4jRoot = LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME); if (!(slf4jRoot instanceof Logger)) return; String logLevel = System.getProperty("qdbLogLevel", cfg.getString("logLevel")); Logger root = (Logger)slf4jRoot; root.setLevel(Level.toLevel(logLevel)); String graylog2 = cfg.getString("graylog2"); if (graylog2 != null && graylog2.length() > 0) { int i = graylog2.indexOf(":"); int port; if (i > 0) { port = Integer.parseInt(graylog2.substring(i + 1)); graylog2 = graylog2.substring(0, i); } else { port = 12201; } GelfAppender<ILoggingEvent> ga = new GelfAppender<ILoggingEvent>(); ga.setName("graylog2"); ga.setFacility("qdb"); ga.setGraylog2ServerHost(graylog2); ga.setGraylog2ServerPort(port); ga.setGraylog2ServerVersion(cfg.getString("graylog2ServerVersion")); ga.setUseLoggerName(true); ga.setUseThreadName(true); root.addAppender(ga); ga.start(); } } }